package advanced.thread;

/**
 * 代理:通常用于 增强服务,记录日志
 * 1. 静态代理
 * 真实角色
 * 代理角色
 * <p>
 * <p>
 * 2. 动态代理
 */
public class L5 {
    public static void main(String[] args) {
        WeddingCompany wc = new WeddingCompany(new You());
        wc.haddpMarry();


    }
}

interface Marray {
    void haddpMarry();
}

/**
 * 真实角色
 */
class You implements Marray {

    @Override
    public void haddpMarry() {
        System.out.println("you adn 嫦娥奔月了");
    }
}

/**
 * 这是一个代理
 */
class WeddingCompany implements Marray {
    private Marray target;

    public WeddingCompany(Marray target) {
        this.target = target;
    }

    @Override
    public void haddpMarry() {
        this.target.haddpMarry();
        ready();
    }

    private void ready() {
        System.out.println("闹玉兔");
    }
}